package mblog.base.jsoup;


import com.google.gson.Gson;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.*;

/**从智联招聘获取招聘信息
 * @author syskey
 * @url 智联招聘网站链接（建议不要更改）
 * @city 搜索工作的城市
 * @keywrods 搜索工作的相关关键字
 */

public class BaiXingUtils {

    private static String downloadFilePath = "E://downloadImage//";
//    private String url="http://datachart.500.com/ssq/history/newinc/history.php?start=03001&end=03200";  //智联招聘网站
    private static String url = "http://shanghai.baixing.com/ershou/";  //百姓网上海站点
    public BaiXingUtils(String city, String keywords){

    }

    public static Document getHttpUrl(String url, int timeout){
        Document doc = null;
        try {
            Connection connection = Jsoup.connect(url).timeout(timeout);
            connection.header("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
            connection.header("Accept-Encoding", "gzip, deflate, sdch");
            connection.header("Accept-Language", "zh-CN,zh;q=0.8");
            connection.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36");
            doc = connection.get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return doc;
    }

    public static void main(String[] args) {
//        String ddd = "描述信息TA的故事 收藏(8) 分享 举报 新旧程度：99成新 ，有曲美，全友，欧马等大品牌。主要是客厅，餐厅，书​‌‌房，卧室等上千套家具，由于品种很多，不能一一列出，看实物有标价， ，具体物品价格如下， 1；转角布艺贵妃沙发700--1100元，真皮沙发800--2500元。 2；床；（都带席梦思床垫）1米2的600元，1米35的700元，1米5的700--900元，1米8的800--1200元，有实木，板式和真皮的。 3；衣柜；5开门或2大移门衣柜价格800--1000元，全实木的1500元。 4，卧室板式5件套家具；1700--2300元。 5；卧室全实木5件套家具；3000--3500元。 6；餐桌；有玻璃钢的和全实木的，价格600...更多 ，有曲美，全友，欧马等大品牌。主要是客厅，餐厅，书​‌‌房，卧室等上千套家具，由于品种很多，不能一一列出，看实物有标价， ，具体物品价格如下， 1；转角布艺贵妃沙发700--1100元，真皮沙发800--2500元。 2；床；（都带席梦思床垫）1米2的600元，1米35的700元，1米5的700--900元，1米8的800--1200元，有实木，板式和真皮的。 3；衣柜；5开门或2大移门衣柜价格800--1000元，全实木的1500元。 4，卧室板式5件套家具；1700--2300元。 5；卧室全实木5件套家具；3000--3500元。 6；餐桌；有玻璃钢的和全实木的，价格600--1000元。 地址；是嘉定城区沪宜公路2568号（沃尔玛超市底层家具商城），介于马陆和嘉定的交界处，（地铁11号线新城站下车，坐1站公交车到沪宜公路希望路下）市区公交有北嘉线，南嘉线，嘉江专线，都到希望路站下车即到，也有到沃尔玛的免费公交车，一般在早晨8.30到晚上7.30点都可以看货，周末不休息 联系人 张先生 18817681335 给我留言";
//        System.out.println(ddd.replace("描述信息TA的故事","").replace("收藏(","").replace(")","").replace("分享","").replace("举报",""));
//        bxUtils(url);
        List<Map<String, String>> dataMapList = bxUtils(url);
//        if(dataMapList!=null && dataMapList.size()>0){
//            dataMapList.forEach((mapData) ->
//                    System.out.print(mapData.get("clickUrl") + "; ")
//            );
//        }


        Gson gson = new Gson();
        System.out.println("dataMapList"+gson.toJson(dataMapList));
//        String sss = "";
//        gson.fromJson(sss,);


//        daletou("http://s.lvmama.com/route/H9K440300?keyword=%E4%B8%8A%E6%B5%B7&k=0#list");
    }

    public static List<Map<String,String>> bxUtils(String url) {

        List<Map<String, String>> resultListMap = new ArrayList<>();

        System.setProperty("proxySet", "true");
        System.setProperty("http.proxyHost", "58.246.78.43");
        System.setProperty("http.proxyPort", "7070");
        System.out.println("===="+url);
        Document doc = getHttpUrl(url, 40000);
        Elements elements = doc.select(".list-ad-items");
        System.out.println("elements.size()"+elements.size());
        if(!(elements!=null && elements.size()>0)){
            return resultListMap;
        }

        System.out.println("elements.size()"+elements.size());

        String htmlStr = elements.get(0).html();
        Document sDoc = Jsoup.parse(htmlStr);

        Elements selements = sDoc.select("li.listing-ad");
        System.out.println("数据总条数" + selements.size());
        int i=1;
        for(Element element : selements) {
            i++;
            if(i>20){
                break;
            }
            Map<String, String> resultMap = new HashMap<>();
            if(element!=null){
                String title = element.select("div.media-body > div.media-body-title > a.ad-title").html();
                resultMap.put("title", title);

                String price = element.select("div.media-body > div.media-body-title > span.highlight").html();
                resultMap.put("price", price);

                String address = element.select("div.media-body > div.ad-item-detail").eq(0).html();
                resultMap.put("address", address);

                String picutre = element.select("a.media-cap > img").attr("src");
                if(Objects.equals(picutre.indexOf("http"),-1)){
                    picutre = element.select("a.media-cap > img").attr("data-originsource");
                }
                resultMap.put("picutre", picutre);

                String clickUrl = element.select("a.media-cap").attr("href");
                resultMap.put("clickUrl", clickUrl);

                Document secondDoc = getHttpUrl(clickUrl, 30000);

                if(secondDoc!=null){
                    String mobileStart = secondDoc.select(".contact-no").html().replace("****", "");
                    String mobileEnd = secondDoc.select(".show-contact").attr("data-contact");
                    resultMap.put("mobile", mobileStart + "" + mobileEnd);

                    String descs = secondDoc.select(".viewad-meta2-item").html();
                    String viewText = secondDoc.select(".viewad-text-hide").html();

                    //System.out.println("图片信息");
                    Elements elementsItems = secondDoc.select("div.photo-gallery > div.featured-height > div.photo-item > a");
                    StringBuffer images = new StringBuffer();
                    StringBuffer view_images = new StringBuffer();
                    for (Element eItem : elementsItems) {
                        String backgrounds = eItem.attr("style");
                        String resultImage = backgrounds.replace("background:url(", "").replace(")", "").replace("center", "").replace(" ", "");
                        images.append(resultImage).append("#");
                        view_images.append("<img src='>").append(resultImage).append("'><br>");
//                        System.out.println("图片信息" + resultImage);
                    }

                    resultMap.put("descs", descs+"<br>"+viewText+"<br>"+view_images.toString());


                    resultMap.put("images",images.toString());
                }
            }
            resultListMap.add(resultMap);
        }
        return resultListMap;
    }


    public static List<HashMap<String,Object>> qilecai(String url){
//        http://datachart.500.com/qlc/history/newinc/history.php?start=07001&end=07200
        List<HashMap<String,Object>> dataList = new ArrayList<>();
        HashMap<String,Object> map = null;
        Document doc = getHttpUrl(url,4000);
        Elements elements = doc.select("tr.t_tr1");
        for(Element element : elements){
            map = new HashMap<>();
            String code = element.getElementsByTag("td").eq(0).html();
            map.put("code",code);

            String allred = element.getElementsByTag("td").eq(1).text();
            String[] allDatas = allred.split(" ");
            String blue = element.getElementsByTag("td").eq(1).select(".cBlue").eq(0).html();
            System.out.println(allred+"===="+blue+"----"+allDatas.length);
            map.put("red1",allDatas[0]);
            map.put("red2",allDatas[1]);
            map.put("red3",allDatas[2]);
            map.put("red4",allDatas[3]);
            map.put("red5",allDatas[4]);
            map.put("red6",allDatas[5]);
            map.put("red7",allDatas[6]);
            map.put("blue",allDatas[7]);
            dataList.add(map);
        }
        return dataList;
    }

    public static List<HashMap<String,Object>> getZhiLianWork(String url){
            List<HashMap<String,Object>> dataList = new ArrayList<>();
            HashMap<String,Object> map = null;
            Document doc = getHttpUrl(url,4000);
            Elements elements = doc.getElementsByClass("t_tr1");
            for(Element element : elements){
                map = new HashMap<>();
                String code = element.getElementsByTag("td").eq(0).html();
                map.put("code",code);
                String red1 = element.getElementsByTag("td").eq(1).html();
                map.put("red1",red1);
                String red2 = element.getElementsByTag("td").eq(2).html();
                map.put("red2",red2);
                String red3 = element.getElementsByTag("td").eq(3).html();
                map.put("red3",red3);
                String red4 = element.getElementsByTag("td").eq(4).html();
                map.put("red4",red4);
                String red5 = element.getElementsByTag("td").eq(5).html();
                map.put("red5",red5);
                String red6 = element.getElementsByTag("td").eq(6).html();
                map.put("red6",red6);

                String blue = element.getElementsByTag("td").eq(7).html();
                map.put("blue",blue);
                System.out.println("----"+code);

                dataList.add(map);
            }
            return dataList;
    }


    public static List<HashMap<String,Object>> daletou(String url){
        List<HashMap<String,Object>> dataList = new ArrayList<>();
        HashMap<String,Object> map = null;
        Document doc = getHttpUrl(url,4000);
        Elements elements = doc.select("div.product-item");
        int i = 0;
        for(Element element : elements){
            System.out.println(element.select("h3.product-title").select("a").select("span").select("em").html());
            System.out.println(element.select("div.product-price").select("em").html());
            System.out.println(element.select("div.product-left").select("img").attr("src"));
        }
        return dataList;
    }

    /**
     *
     * 根据图片的外网地址下载图片到本地硬盘的filePath
     * @param filePath 本地保存图片的文件路径
     * @param imgUrl 图片的外网地址
     * @throws UnsupportedEncodingException
     *
     */
//    public static void downImages(String filePath, String imgUrl, String title) throws UnsupportedEncodingException {
//
//        //图片url中的前面部分：例如"http://images.csdn.net/"
//        String beforeUrl = imgUrl.substring(0,imgUrl.lastIndexOf("/")+1);
//        //图片url中的后面部分：例如“20150529/PP6A7429_副本1.jpg”
//        String fileName = imgUrl.substring(imgUrl.lastIndexOf("/")+1);
//        //编码之后的fileName，空格会变成字符"+"
//        String newFileName = URLEncoder.encode(fileName, "UTF-8");
//        //把编码之后的fileName中的字符"+"，替换为UTF-8中的空格表示："%20"
//        newFileName = newFileName.replaceAll("\\+", "\\%20");
//        //编码之后的url
//        imgUrl = beforeUrl + newFileName;
//
//        try {
//            //创建文件目录
//            File files = new File(filePath);
//            if (!files.exists()) {
//                files.mkdirs();
//            }
//            //获取下载地址
//            URL url = new URL(imgUrl);
//            //链接网络地址
//            HttpURLConnection connection = (HttpURLConnection)url.openConnection();
//            //获取链接的输出流
//            InputStream is = connection.getInputStream();
//            //创建文件，fileName为编码之前的文件名
//            String md5File = MD5Util.md5(title);
//            File file = new File(filePath + md5File+".jpg");
//            //根据输入流写入文件
//            FileOutputStream out = new FileOutputStream(file);
//            int i = 0;
//            while((i = is.read()) != -1){
//                out.write(i);
//            }
//            out.close();
//            is.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }



}